In general, a leg type moving robot, such as a bipedal moving robot, has a clinometer mounted on its body, and the posture of the robot is controlled so that an output of the clinometer (an inclination angle of the body relative to a vertical direction) is converged to an inclination angle of the body of a desired gait.
The clinometer is comprised of a gyro sensor for detecting an angular velocity of the body and an accelerometer (or a vertical indicator, such as a pendulum) for detecting a vertical direction (that is, the gravitational direction). The clinometer is basically adapted to estimate the inclination angle of the body by integrating angular velocities detected by the gyro sensor; however, simply integrating them accumulates errors (or a so-called “drift” is generated). For this reason, detected values of the accelerometer have been used to correct an estimated inclination angle obtained by integration. To be more specific, a difference between an inclination angle relative to the direction of acceleration detected by the accelerometer and an inclination angle obtained by subjecting a detected value of the gyro sensor to an integrator is determined, and then a correction amount based on the difference (a sum of a value obtained by multiplying the difference by a predetermined gain and a value obtained by integrating the difference and multiplying it by a predetermined gain) is additionally supplied to the integrator so as to correct the inclination angle.
According to this method, however, there has been a possibility of opposite effect in that an error of an estimated inclination angle is increased by the aforesaid correction when the body of the robot is severely accelerated or decelerated during travel or the like, because acceleration from a motion of the body is added to an acceleration detected by the accelerometer in addition to a gravitational acceleration, preventing accurate detection of a direction of the gravitational acceleration.
Hereinafter, an inclination and a direction of a certain representative part, such as a body, will be referred to as “posture” as a generic term. The “inclination” refers to an angle formed relative to a vertical direction. The “direction” refers to a direction of a vector obtained by projecting the vector that indicates the front direction of a representative part onto a horizontal surface.
Generally, a representative part refers to a part provided with a clinometer composed of a gyro sensor and an accelerometer. Other parts may be specified as representative parts if joint displacement detectors, such as encoders, or displacement control actuators are provided on individual joints between the parts and a part with the clinometer, so that the inclinations of the parts can be calculated. For example, even if a head connected by a neck with a joint is provided with a gyro sensor and/or an accelerometer, a body may be defined as a representative part. In an embodiment to be discussed hereinafter, a body will be specified as a representative part.
Furthermore, a set of displacements of all joints is generally referred to as a posture. However, this will not mean a “posture” in the present embodiment unless otherwise specified.
In a conventional leg type moving robot, there has been a problem in addition to the aforesaid problem. Reaction forces generated when the robot swings its legs while it is moving cause rotational slippages (spins) to take place between its feet and a floor because of frictional forces between the feet (distal parts of the legs) and the floor exceeds its limit. As a result, the posture of the entire robot rotates about a vertical axis, deviating from the direction of a desired gait.
Complementarily, the body is not necessarily maintained vertically (upright) at all times to generate only the desired gait for straight walking. Even in the desired gait, the entire robot or the body swings or inclines longitudinally or laterally. In other words, the rotation of the entire posture (or the rotation of the posture of a representative part, such as the body) exists also in the desired gait. In the present description, therefore, the rotation of a posture in a desired gait will be referred to as a desired posture rotation. A phenomenon to be mainly discussed in the present description is a rotation error of an actual posture of the entire robot (or a rotation of a posture of a representative part, such as a body) from the above desired posture rotation. Strictly speaking, the phenomenon should be referred to as “perturbation from a desired posture rotation” or “posture rotation perturbation”. This, however, will be abbreviated to “posture rotation” hereinafter unless there is a possibility of confusion with a desired posture rotation.
Hereinafter, a phenomenon in which the entire robot posture-rotates about a vertical axis and deviates from a desired gait direction will be referred to, in particular, as a spin.
The present invention has been made with a view based on the background explained above, and it is an object thereof to provide a system for estimating a posture that enables a leg type moving robot to accurately estimate its own posture. In particular, it is an object of the present invention to provide a system for estimating a posture that enables a leg type moving robot to accurately estimate its own posture even in a state wherein an acceleration is considerably changing in a horizontal direction or a vertical direction or in a state wherein the entire robot is undergoing a posture rotation (or a spin) due to a rotational slippage or the like between a foot sole of the robot and a floor.